FAQ Update
authorBST 1999 Tony Gale <gale@gtk.org>
Wed, 11 Aug 1999 12:43:04 +0000 (12:43 +0000)
committerTony Gale <gale@src.gnome.org>
Wed, 11 Aug 1999 12:43:04 +0000 (12:43 +0000)
Wed Aug 11 13:38:26 BST 1999 Tony Gale  <gale@gtk.org>
        * docs/gtkfaq.sgml: FAQ Update

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/faq/gtkfaq.sgml
docs/gtkfaq.sgml

index 534de0c09b2038033b74eafdc345a342f313e51c..60dbfcca7e7164fd54298a55f53f0c68b39d272d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Wed Aug 11 13:38:26 BST 1999 Tony Gale  <gale@gtk.org>
+
+        * docs/gtkfaq.sgml: FAQ Update
+
 1999-07-25  Tor Lillqvist  <tml@iki.fi>
 
        * README.win32
index 534de0c09b2038033b74eafdc345a342f313e51c..60dbfcca7e7164fd54298a55f53f0c68b39d272d 100644 (file)
@@ -1,3 +1,7 @@
+Wed Aug 11 13:38:26 BST 1999 Tony Gale  <gale@gtk.org>
+
+        * docs/gtkfaq.sgml: FAQ Update
+
 1999-07-25  Tor Lillqvist  <tml@iki.fi>
 
        * README.win32
index 534de0c09b2038033b74eafdc345a342f313e51c..60dbfcca7e7164fd54298a55f53f0c68b39d272d 100644 (file)
@@ -1,3 +1,7 @@
+Wed Aug 11 13:38:26 BST 1999 Tony Gale  <gale@gtk.org>
+
+        * docs/gtkfaq.sgml: FAQ Update
+
 1999-07-25  Tor Lillqvist  <tml@iki.fi>
 
        * README.win32
index 534de0c09b2038033b74eafdc345a342f313e51c..60dbfcca7e7164fd54298a55f53f0c68b39d272d 100644 (file)
@@ -1,3 +1,7 @@
+Wed Aug 11 13:38:26 BST 1999 Tony Gale  <gale@gtk.org>
+
+        * docs/gtkfaq.sgml: FAQ Update
+
 1999-07-25  Tor Lillqvist  <tml@iki.fi>
 
        * README.win32
index 534de0c09b2038033b74eafdc345a342f313e51c..60dbfcca7e7164fd54298a55f53f0c68b39d272d 100644 (file)
@@ -1,3 +1,7 @@
+Wed Aug 11 13:38:26 BST 1999 Tony Gale  <gale@gtk.org>
+
+        * docs/gtkfaq.sgml: FAQ Update
+
 1999-07-25  Tor Lillqvist  <tml@iki.fi>
 
        * README.win32
index 534de0c09b2038033b74eafdc345a342f313e51c..60dbfcca7e7164fd54298a55f53f0c68b39d272d 100644 (file)
@@ -1,3 +1,7 @@
+Wed Aug 11 13:38:26 BST 1999 Tony Gale  <gale@gtk.org>
+
+        * docs/gtkfaq.sgml: FAQ Update
+
 1999-07-25  Tor Lillqvist  <tml@iki.fi>
 
        * README.win32
index 534de0c09b2038033b74eafdc345a342f313e51c..60dbfcca7e7164fd54298a55f53f0c68b39d272d 100644 (file)
@@ -1,3 +1,7 @@
+Wed Aug 11 13:38:26 BST 1999 Tony Gale  <gale@gtk.org>
+
+        * docs/gtkfaq.sgml: FAQ Update
+
 1999-07-25  Tor Lillqvist  <tml@iki.fi>
 
        * README.win32
index 83f407243dd6d46f9eb725e6c7a63634f3d55e6e..10fa11581ac3ac3373eb806ee746fc174f92a088 100644 (file)
@@ -9,7 +9,7 @@
 <!-- NOTE: Use only one author tag, otherwise sgml2txt barfs - TRG --> 
 <author>Nathan Froyd, Tony Gale, Shawn T. Amundson, Emmanuel Deloget
 
-<date>July 14th 1999
+<date>August 10th 1999
 
 <abstract> This document is intended to answer questions that are likely to be 
 frequently asked by programmers using GTK+ or people who are just looking at 
@@ -30,7 +30,7 @@ using GTK+.
 The FAQ authors want to thank:
 <itemize>
 <item>Havoc Pennington
-<item>Eric Mouw
+<item>Erik Mouw
 <item>Owen Taylor
 <item>Tim Janik
 <item>Thomas Mailund Jensen
@@ -103,10 +103,20 @@ reference material for both GTK and GDK, this FAQ and the
 GTK Tutorial.
 
 In addition, you can find links to HTML versions of these documents 
-by going to 
-<htmlurl url="http://www.gtk.org/" 
-name="http://www.gtk.org/">.
+by going to <htmlurl url="http://www.gtk.org/" 
+name="http://www.gtk.org/">. A packaged version of the GTK Tutorial,
+with SGML, HTML, Postscript, DVI and text versions can be found in
+<htmlurl url="ftp://ftp.gtk.org/pub/gtk/tutorial"
+name="ftp://ftp.gtk.org/pub/gtk/tutorial">
 
+There is also a book available that details programming with GTK+ and
+GDK which has been written by Eric Harlow. It is entitled "Developing
+Linux Applications with GTK+ and GDK" and is available at all good
+book stores. The ISBN is 0-7357-0021-4
+
+The example code from Eric's book is available on-line at
+<htmlurl url="http://www.bcpl.net/~eharlow/book"
+name="http://www.bcpl.net/~eharlow/book">
 
 <!-- ----------------------------------------------------------------- -->
 <sect1>Is there a mailing list (or mailing list archive) for GTK+?
@@ -125,9 +135,9 @@ email message to <htmlurl url="mailto:gtk-list-request@redhat.com"
 name="gtk-list-request@redhat.com">
 with <em>subscribe</em> in the <bf>subject</bf>.
 <p>
-A searchable archive of the mailing list can be found at 
-<htmlurl url="http://archive.redhat.com/gtk-list" 
-name="http://archive.redhat.com/gtk-list">
+An archive of the mailing list can be found at 
+<htmlurl url="http://www.gnome.org/mailing-lists/archives/gtk-list" 
+name="http://www.gnome.org/mailing-lists/archives/gtk-list">
 </itemize>
 <!-- ----------------------------------------------------------------- -->
 <sect1>The gtk-list hasn't had any traffic for days, is it dead?
@@ -944,6 +954,35 @@ carefully.
 Regardless, it's especially not a priority since relatively good
 workarounds exist. -->
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How to I identifiy a widgets top level window or other ancestor?
+<p>
+There are a couple of ways to find the top level parent of a
+widget. The easier way is to call the <tt/gtk_widget_top_level()/
+function that returns a pointer to a GtkWidget that is the top level
+window.
+
+A more complicated way to do this (but less limited, as it allows
+the user to get the closest ancestor of a known type) is to use
+<tt/gtk_widget_get_ancestor()/ as in:
+
+<tscreen><verb>
+      GtkWidget       *widget;
+      
+      widget = gtk_widget_get_ancestor(w, GTK_TYPE_WINDOW);
+</verb></tscreen>
+
+Since virtually all the GTK_TYPEs can be used as the second parameter of
+this function, you can get any parent widget of a particular
+widget. Suppose you have an hbox which contains a vbox, which in turn contains
+some other atomic widget (entry, label, etc. To find the master hbox
+using the <tt/entry/ widget simply use:
+
+<tscreen><verb>
+      GtkWidget       *hbox;
+      hbox = gtk_widget_get_ancestor(w, GTK_TYPE_HBOX);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I find out about the selection of a GtkList?
 <p>
@@ -1055,10 +1094,48 @@ Old versions of GTK+ used to provide the <tt/gtk_container_enable_resize()/ and
 modifying widgets.
 
 In the current version of GTK+, there is no more need for these functions, 
-since GTK+ will only resize widget during idle.
+since GTK+ will only resize widget during idle.
 
 <!-- XXX should we get rid of this one ? -->
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>I don't want the user of my applications to enter text into a GtkCombo. Any idea?
+<p>
+A GtkCombo has an associated entry which can be accessed using the
+following expression:
+
+<tscreen><verb>
+      GTK_COMBO(combo_widget)->entry
+</verb></tscreen>
+
+If you don't want the user to be able to modify the content of this
+entry, you can use the gtk_entry_set_editable() function:
+
+<tscreen><verb>
+      void gtk_entry_set_editable(GtkEntry *entry, 
+                                  gboolean editable);
+</verb></tscreen>
+
+Set the editable parameter to FALSE to disable typing into the entry.
+
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I catch a combo box change?
+<p>
+The entry which is associated to your GtkCombo send a "changed" signal when:
+<itemize>
+      <item>some text is typed in
+      <item>the selection of the combo box is changed
+</itemize>
+
+To catch any combo box change, simply connect your signal handler with
+
+<tscreen><verb>
+      gtk_signal_connect(GTK_COMBO(cb)->entry,
+                         "changed",
+                         GTK_SIGNAL_FUNC(my_cb_change_handler),
+                         NULL);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I catch a double click event (in a list widget, for example)?
 <p>
@@ -1453,6 +1530,38 @@ To disable (or to enable) a widget, use the <tt/gtk_widget_set_sensitive()/
 function. The first parameter is you widget pointer. The second parameter
 is a boolean value: when this value is TRUE, the widget is enabled.
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I use horizontal scrollbars with a GtkText widget?
+<p>
+The short answer is that you can't. The current version of the GtkText
+widget does not support horizontal scrolling. There is an intention to
+completely rewrite the GtkText widget, at which time this limitation
+will be removed.
+
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I change the font of a GtkText widget?
+<p>
+There are a couple of ways of doing this. As GTK+ allows the
+appearance of applications to be changed at run time using resources
+you can use something like the following in the appropriate
+file:
+
+<tscreen><verb>
+style "text"
+{
+  font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
+}
+</verb></tscreen>
+
+Another way to do this is to load a font within your program, and then
+use this in the functions for adding text to the text widget. You can
+load a font using, for example:
+
+<tscreen><verb>
+  GdkFont *font;
+  font = gdk_font_load("-adobe-helvetica-medium-r-normal--*-140-*-*-*-*-*-*");
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I set the cursor position in a GtkText object?
 <p>
@@ -1530,7 +1639,7 @@ and the underlying X library really doesn't like this.
 
 The right function to use here is <tt/_exit()/. 
 
-Eric Mouw gave the following piece of code about the fork()/exit() problem
+Erik Mouw gave the following piece of code about the fork()/exit() problem
 (slightly modified)
 
 <tscreen><verb>
@@ -1617,6 +1726,7 @@ and safer to use on multiple platforms.
 
 <!-- Examples, anybody? I've been mulling some over. NF -->
    
+<!-- ----------------------------------------------------------------- -->
 <sect1>How do I use color allocation?
 <p>
 One of the nice things about GDK is that it's based on top of Xlib; this is 
@@ -1784,8 +1894,8 @@ This document is maintained by Nathan Froyd
 name="&lt;maestrox@geocities.com&gt;">,
 Tony Gale <htmlurl url="mailto:gale@gimp.org" 
 name="&lt;gale@gimp.org&gt;"> and 
-Emmanuel Deloget <htmlurl url="mailto:pixel@epita.fr"
-name="&lt;pixel@epita.fr&gt;">.
+Emmanuel Deloget <htmlurl url="mailto:logout@free.fr"
+name="&lt;logout@free.fr&gt;">.
 This FAQ was created by Shawn T. Amundson 
 <htmlurl url="mailto:amundson@gimp.org" 
 name="&lt;amundson@gimp.org&gt;"> who continues to provide support.
index 83f407243dd6d46f9eb725e6c7a63634f3d55e6e..10fa11581ac3ac3373eb806ee746fc174f92a088 100644 (file)
@@ -9,7 +9,7 @@
 <!-- NOTE: Use only one author tag, otherwise sgml2txt barfs - TRG --> 
 <author>Nathan Froyd, Tony Gale, Shawn T. Amundson, Emmanuel Deloget
 
-<date>July 14th 1999
+<date>August 10th 1999
 
 <abstract> This document is intended to answer questions that are likely to be 
 frequently asked by programmers using GTK+ or people who are just looking at 
@@ -30,7 +30,7 @@ using GTK+.
 The FAQ authors want to thank:
 <itemize>
 <item>Havoc Pennington
-<item>Eric Mouw
+<item>Erik Mouw
 <item>Owen Taylor
 <item>Tim Janik
 <item>Thomas Mailund Jensen
@@ -103,10 +103,20 @@ reference material for both GTK and GDK, this FAQ and the
 GTK Tutorial.
 
 In addition, you can find links to HTML versions of these documents 
-by going to 
-<htmlurl url="http://www.gtk.org/" 
-name="http://www.gtk.org/">.
+by going to <htmlurl url="http://www.gtk.org/" 
+name="http://www.gtk.org/">. A packaged version of the GTK Tutorial,
+with SGML, HTML, Postscript, DVI and text versions can be found in
+<htmlurl url="ftp://ftp.gtk.org/pub/gtk/tutorial"
+name="ftp://ftp.gtk.org/pub/gtk/tutorial">
 
+There is also a book available that details programming with GTK+ and
+GDK which has been written by Eric Harlow. It is entitled "Developing
+Linux Applications with GTK+ and GDK" and is available at all good
+book stores. The ISBN is 0-7357-0021-4
+
+The example code from Eric's book is available on-line at
+<htmlurl url="http://www.bcpl.net/~eharlow/book"
+name="http://www.bcpl.net/~eharlow/book">
 
 <!-- ----------------------------------------------------------------- -->
 <sect1>Is there a mailing list (or mailing list archive) for GTK+?
@@ -125,9 +135,9 @@ email message to <htmlurl url="mailto:gtk-list-request@redhat.com"
 name="gtk-list-request@redhat.com">
 with <em>subscribe</em> in the <bf>subject</bf>.
 <p>
-A searchable archive of the mailing list can be found at 
-<htmlurl url="http://archive.redhat.com/gtk-list" 
-name="http://archive.redhat.com/gtk-list">
+An archive of the mailing list can be found at 
+<htmlurl url="http://www.gnome.org/mailing-lists/archives/gtk-list" 
+name="http://www.gnome.org/mailing-lists/archives/gtk-list">
 </itemize>
 <!-- ----------------------------------------------------------------- -->
 <sect1>The gtk-list hasn't had any traffic for days, is it dead?
@@ -944,6 +954,35 @@ carefully.
 Regardless, it's especially not a priority since relatively good
 workarounds exist. -->
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How to I identifiy a widgets top level window or other ancestor?
+<p>
+There are a couple of ways to find the top level parent of a
+widget. The easier way is to call the <tt/gtk_widget_top_level()/
+function that returns a pointer to a GtkWidget that is the top level
+window.
+
+A more complicated way to do this (but less limited, as it allows
+the user to get the closest ancestor of a known type) is to use
+<tt/gtk_widget_get_ancestor()/ as in:
+
+<tscreen><verb>
+      GtkWidget       *widget;
+      
+      widget = gtk_widget_get_ancestor(w, GTK_TYPE_WINDOW);
+</verb></tscreen>
+
+Since virtually all the GTK_TYPEs can be used as the second parameter of
+this function, you can get any parent widget of a particular
+widget. Suppose you have an hbox which contains a vbox, which in turn contains
+some other atomic widget (entry, label, etc. To find the master hbox
+using the <tt/entry/ widget simply use:
+
+<tscreen><verb>
+      GtkWidget       *hbox;
+      hbox = gtk_widget_get_ancestor(w, GTK_TYPE_HBOX);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I find out about the selection of a GtkList?
 <p>
@@ -1055,10 +1094,48 @@ Old versions of GTK+ used to provide the <tt/gtk_container_enable_resize()/ and
 modifying widgets.
 
 In the current version of GTK+, there is no more need for these functions, 
-since GTK+ will only resize widget during idle.
+since GTK+ will only resize widget during idle.
 
 <!-- XXX should we get rid of this one ? -->
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>I don't want the user of my applications to enter text into a GtkCombo. Any idea?
+<p>
+A GtkCombo has an associated entry which can be accessed using the
+following expression:
+
+<tscreen><verb>
+      GTK_COMBO(combo_widget)->entry
+</verb></tscreen>
+
+If you don't want the user to be able to modify the content of this
+entry, you can use the gtk_entry_set_editable() function:
+
+<tscreen><verb>
+      void gtk_entry_set_editable(GtkEntry *entry, 
+                                  gboolean editable);
+</verb></tscreen>
+
+Set the editable parameter to FALSE to disable typing into the entry.
+
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I catch a combo box change?
+<p>
+The entry which is associated to your GtkCombo send a "changed" signal when:
+<itemize>
+      <item>some text is typed in
+      <item>the selection of the combo box is changed
+</itemize>
+
+To catch any combo box change, simply connect your signal handler with
+
+<tscreen><verb>
+      gtk_signal_connect(GTK_COMBO(cb)->entry,
+                         "changed",
+                         GTK_SIGNAL_FUNC(my_cb_change_handler),
+                         NULL);
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I catch a double click event (in a list widget, for example)?
 <p>
@@ -1453,6 +1530,38 @@ To disable (or to enable) a widget, use the <tt/gtk_widget_set_sensitive()/
 function. The first parameter is you widget pointer. The second parameter
 is a boolean value: when this value is TRUE, the widget is enabled.
 
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I use horizontal scrollbars with a GtkText widget?
+<p>
+The short answer is that you can't. The current version of the GtkText
+widget does not support horizontal scrolling. There is an intention to
+completely rewrite the GtkText widget, at which time this limitation
+will be removed.
+
+<!-- ----------------------------------------------------------------- -->
+<sect1>How do I change the font of a GtkText widget?
+<p>
+There are a couple of ways of doing this. As GTK+ allows the
+appearance of applications to be changed at run time using resources
+you can use something like the following in the appropriate
+file:
+
+<tscreen><verb>
+style "text"
+{
+  font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
+}
+</verb></tscreen>
+
+Another way to do this is to load a font within your program, and then
+use this in the functions for adding text to the text widget. You can
+load a font using, for example:
+
+<tscreen><verb>
+  GdkFont *font;
+  font = gdk_font_load("-adobe-helvetica-medium-r-normal--*-140-*-*-*-*-*-*");
+</verb></tscreen>
+
 <!-- ----------------------------------------------------------------- -->
 <sect1>How do I set the cursor position in a GtkText object?
 <p>
@@ -1530,7 +1639,7 @@ and the underlying X library really doesn't like this.
 
 The right function to use here is <tt/_exit()/. 
 
-Eric Mouw gave the following piece of code about the fork()/exit() problem
+Erik Mouw gave the following piece of code about the fork()/exit() problem
 (slightly modified)
 
 <tscreen><verb>
@@ -1617,6 +1726,7 @@ and safer to use on multiple platforms.
 
 <!-- Examples, anybody? I've been mulling some over. NF -->
    
+<!-- ----------------------------------------------------------------- -->
 <sect1>How do I use color allocation?
 <p>
 One of the nice things about GDK is that it's based on top of Xlib; this is 
@@ -1784,8 +1894,8 @@ This document is maintained by Nathan Froyd
 name="&lt;maestrox@geocities.com&gt;">,
 Tony Gale <htmlurl url="mailto:gale@gimp.org" 
 name="&lt;gale@gimp.org&gt;"> and 
-Emmanuel Deloget <htmlurl url="mailto:pixel@epita.fr"
-name="&lt;pixel@epita.fr&gt;">.
+Emmanuel Deloget <htmlurl url="mailto:logout@free.fr"
+name="&lt;logout@free.fr&gt;">.
 This FAQ was created by Shawn T. Amundson 
 <htmlurl url="mailto:amundson@gimp.org" 
 name="&lt;amundson@gimp.org&gt;"> who continues to provide support.